//
//  FCSuitTableView.h
//  webViewLocal
//
//  Created by WJC on 2021/5/6.
//

#import <UIKit/UIKit.h>
#import "UITableView+FCEmpTableViewSet.h"

#pragma mark - 自身实现代理的tableview,简单相同的cell只需实现requestUseCell(以cell名称命名将自动注册)cellLevy(给cellmodel赋值)cellHeight(行高)将实现展示,复杂cell自行完成block
#warning 在cell是约束布局的情况下,推荐使用FCSuitBoundTableView,FCSuitBoundTableView可智适应约束cell的高度
@class FCSuitTableView;
@protocol FCSuitTableViewDelegate <NSObject>
/**
 表格内容
 */
-(UITableViewCell*)gettableView:(FCSuitTableView *)tableView andTableViewCell:(UITableViewCell*)cell cellForRowAtIndexPath:(NSIndexPath *)indexPath;
/**
 表格点击
 */
-(void)tableViewSelect:(FCSuitTableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
@end

    /// 免除频繁代理tableview ,目前不支持复杂cell复杂cell使用tableViewDelegate代理第一条
@interface FCSuitTableView : UITableView
    ///cell的赋值requestUse;
@property (nonatomic,strong) NSString *requestUseCell;
    ///cell的赋值model;
@property (nonatomic,strong) NSString *cellLevy;
    ///cell高度,可由cell里面取;
@property (nonatomic,strong) NSString *cellHeight;

    /// 数据内容默认情况下tableview行数取rows为true时contentModelArr取section
@property (nonatomic,assign) BOOL numberSection;
    /// 数据内容默认情况下tableview行数取rows = contentModelArr.count
@property (nonatomic,strong) NSMutableArray *contentModelArr;
/**
 tableView点击代理,也可以用上面的selectBlock 优先block,加入block,则delegate不执行
 */
@property(nonatomic,weak)id<FCSuitTableViewDelegate> tableViewDelegate;
#pragma mark --以下为特殊处理的tableview样式
    /// 头部修改 headview为空是赋值 sectin是头部 retun头部高度
@property(nonatomic,strong)CGFloat (^setTableViewHeadBlock)(NSInteger section,UIView *headView);
    /// 底部修改 footview为空是赋值 sectin是头部 retun头部高度
@property(nonatomic,strong)CGFloat (^setTableViewFootBlock)(NSInteger section,UIView *footView);
    /// 放弃原有默认方案,自行赋值row数量
@property(nonatomic,strong)NSInteger (^numberOfRowsInSectionBlock)(NSInteger section);
@property(nonatomic,strong)CGFloat (^heightForRowAtIndexPath)(NSIndexPath *index);
    /// 放弃原有默认方案,自行赋值section数量
@property(nonatomic,strong)NSInteger (^numberOfSectionsBlock)(void);

    /// 放弃原有默认方案,自行赋值Cell,优先于代理和默认cell
@property(nonatomic,strong)UITableViewCell* (^cellForRowAtIndexPathBlock)(NSIndexPath *index);
    /// 点击回调 优先于代理
@property(nonatomic,strong)void (^tableViewDidSelect)(NSIndexPath *index);

    /// 编辑模式类别
@property(nonatomic,assign)UITableViewCellEditingStyle editStyle;

    /// 编辑按钮
@property(nonatomic,strong)NSArray<UITableViewRowAction*>* (^setTableViewAction)(NSIndexPath *index);
    /// 点击回调 优先于代理
@property(nonatomic,strong)void (^tableViewDidScroll)(FCSuitTableView *tableView);
@end
